package com.ybbase.framework.base.service;

import com.ybbase.framework.base.model.TreeModel;
import com.ybbase.framework.model.po.system.Permission;
import com.ybbase.framework.model.vo.MenuVO;
import com.ybbase.framework.model.vo.PermissionTreeVO;
import com.ybbase.framework.model.vo.organ.OrganTreeVO;

import java.util.List;

/**
 * 树结构服务
 * @author cg
 * @date 2019-11-30 22:03
 * @since cloud2.0
 */
public interface TreeService {

    /**
     * 递归循环出树列表
     * @author cg
     * @date 2019-08-07 16:34
     * @param oldList 上级目录列表 TreeModel 树结构实体
     * @param sourceList 全部列表
     */
    void sortTree(List<TreeModel> oldList, List<TreeModel> sourceList);

    /**
     * 递归出来的的组织机构树形列表
     * @param
     * @return
     * @author cg
     * @date 2020-01-05 18:34
     * @since cloud2.0
    */
    void sortOrganTree(List<OrganTreeVO> firstList, List<OrganTreeVO> sourseList);

    /**
     * 递归循环出权限列表
     * @param oldList 上级目录列表
     * @param sourceList 全部列表
     * @return
     * @author cg
     * @date 2019-12-01 08:54
     * @since cloud2.0
    */
    void sortPermissionTree(List<MenuVO> oldList, List<MenuVO> sourceList);
    /**
     * 封装前台菜单
     * @author cg
     * @date 2019-08-07 17:28
     * @param tp 权限对象
     * @param arrRoles 选中bottom的按钮字符串
     * @return PermissionTreeVO
     * @since cloud2.0
     */
    MenuVO assembleMenuVO(Permission tp, String arrRoles);
    /**
     * 变更数据Boolean
     * @author cg
     * @date 2019-08-07 18:19
     * @param s 判断boolean 0 false 1 true
     * @return Boolean
     * @since cloud2.0
     */
    Boolean getTreeBoolean(Integer s);

    /**
     * 查询权限树的数据
     * @param
     * @return
     * @author cg
     * @date 2020-01-12 15:15
     * @since cloud2.0
    */
    PermissionTreeVO assemblePermissionTreeVO(Permission tp, boolean check);
    /**
     * 排序权限树
     * @param
     * @return
     * @author cg
     * @date 2020-01-12 15:16
     * @since cloud2.0
    */
    void sortPermissionTreeVO(List<PermissionTreeVO> firstList, List<PermissionTreeVO> sourceList);
}
